package com.cskaoyan.javase.oop1._5compare;
/**
 * 局部变量和成员变量是Java程序开发时
 *      最常见的两种变量类型，所以一定要搞清楚，它们之间的不同。
 * 局部变量和成员变量的比较，我们从以下五个方面去比较：
 *      1.在类中定义的位置不同
 *          局部变量: 定义在类中的局部变量
 *          成员变量: 定义在类中的成员位置
 *      2.在JVM内存中的位置不同
 *          局部变量: 处在方法的栈帧中
 *          成员变量: 处在堆上的对象中
 *      3.生命周期不同
 *          局部变量: 和方法调用"同生共死"
 *          成员变量: 和对象"共生共死",但是实际上一旦对象没有引用指向
 *              成为垃圾对象,成员变量也就失去了作用
 *      4.有无默认初始化不同
 *          局部变量: 没有默认初始化,没有默认值
 *              必须手动初始化才能够使用
 *              不手动初始化完全不可用
 *          成员变量: 有默认初始化,有默认值
 *              不需要强制手动初始化也可以直接使用
 *      5.作用范围
 *          局部变量: 仅在方法或者作用域内部生效
 *          成员变量: 在整个类的成员方法中都可以直接使用成员变量
 *              但是类中的static方法无法直接访问类的成员变量(但是允许间接访问)
 *              严格来说,整个类中都可以使用它.
 *
 * @since 17:00
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    int num;
    public static void main(String[] args) {
        // 局部变量
        int a = 10;
        // System.out.println(num);
    }

    public void test(){
        System.out.println(num);
    }

}
